/**
 * Description:
 * Class Name:StartDead
 * Date:2022/5/5 15:31
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第16章_多线程._16_3_线程的生命周期._16_3_3_线程死亡;

public class StartDead extends Thread{
    private int i;

    @Override
    public void run() {
        for (; i < 100; i++) {
            System.out.println(getName() + "_" + i);
        }
    }

    public static void main(String[] args) {
        // 创建线程对象
        var sd = new StartDead();
        // 创建状态下输出isAlive()为false
        System.out.println(sd.isAlive());
        for (int i = 0; i < 100; i++) {
            System.out.println(Thread.currentThread().getName() + "_" + i);
            if (i == 20){
                // 启动线程
                sd.start();
                // 判断启动后线程的isAlive()值，会输出true
                System.out.println(sd.isAlive());
            }
            // 当线程处于新建、死亡这2种状态时，isAlive()方法会返回false
            System.out.println("----------------");
            if (i > 20 && !sd.isAlive()){
                // 试图再次启动该线程，将会引发IllegalThreadStateException
                sd.start();
            }
            System.out.println("----------------");
        }
    }
}
